﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceImplementation.Translator.BusinessEntityToDataContract
{
    public class FormadorMercado
    {
        public DataContract.Response.FormadorMercadoResponse ToFormadorMercadoResponse(BusinessEntity.FormadorMercado entity)
        {
            DataContract.Response.FormadorMercadoResponse result = null;
            if (entity == null)
                return null;
            else
            {
                result = new Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.FormadorMercadoResponse();
                result.ApelidoCliente = entity.ApelidoCliente;
                result.Ativo = entity.Ativo;
                result.CodigoCliente = entity.CodigoCliente;
                result.DataFinal = entity.DataFinal;
                result.DataInicial = entity.DataInicial;
                result.PercentualDesconto = entity.PercentualDesconto;
                result.Isin = entity.Isin;
                switch (entity.TipoMercado)
                {
                    case BusinessEntity.Enum.TipoMercado.Vista:
                        result.TipoMercado = DataContract.Enum.TipoMercado.Vista; break;
                    case BusinessEntity.Enum.TipoMercado.OpcaoCompra:
                        result.TipoMercado = DataContract.Enum.TipoMercado.OpcaoCompra; break;
                    case BusinessEntity.Enum.TipoMercado.OpcaoVenda:
                        result.TipoMercado = DataContract.Enum.TipoMercado.OpcaoVenda; break;
                    case BusinessEntity.Enum.TipoMercado.ExercicioOpcaoCompra:
                        result.TipoMercado = DataContract.Enum.TipoMercado.ExercicioOpcaoCompra; break;
                    case BusinessEntity.Enum.TipoMercado.ExercicioOpcaoVenda:
                        result.TipoMercado = DataContract.Enum.TipoMercado.ExercicioOpcaoVenda; break;
                    case BusinessEntity.Enum.TipoMercado.Fracionario:
                        result.TipoMercado = DataContract.Enum.TipoMercado.Fracionario; break;
                    case BusinessEntity.Enum.TipoMercado.Estruturado:
                        result.TipoMercado = DataContract.Enum.TipoMercado.Estruturado; break;
                    case BusinessEntity.Enum.TipoMercado.Leilao:
                        result.TipoMercado = DataContract.Enum.TipoMercado.Leilao; break;
                    case BusinessEntity.Enum.TipoMercado.Termo:
                        result.TipoMercado = DataContract.Enum.TipoMercado.Termo; break;
                    case BusinessEntity.Enum.TipoMercado.LeilaoNaoCotados:
                        result.TipoMercado = DataContract.Enum.TipoMercado.LeilaoNaoCotados; break;
                    case BusinessEntity.Enum.TipoMercado.Futuro:
                        result.TipoMercado = DataContract.Enum.TipoMercado.Futuro; break;
                    case BusinessEntity.Enum.TipoMercado.VencimentoFuturo:
                        result.TipoMercado = DataContract.Enum.TipoMercado.VencimentoFuturo; break;
                    case BusinessEntity.Enum.TipoMercado.BOX:
                        result.TipoMercado = DataContract.Enum.TipoMercado.BOX; break;
                    case BusinessEntity.Enum.TipoMercado.OpcaoVendaCompra:
                        result.TipoMercado = DataContract.Enum.TipoMercado.OpcaoVendaCompra; break;
                    case BusinessEntity.Enum.TipoMercado.IntegralizacaoResgateCotas:
                        result.TipoMercado = DataContract.Enum.TipoMercado.IntegralizacaoResgateCotas; break;
                    case BusinessEntity.Enum.TipoMercado.CotasETF:
                        result.TipoMercado = DataContract.Enum.TipoMercado.CotasETF; break;
                    default:
                        break;
                }
            }

            return result;
            
        }

        public List<DataContract.Response.FormadorMercadoResponse> ToFormadorMercadoResponse(List<BusinessEntity.FormadorMercado> entityList)
        {
            List<DataContract.Response.FormadorMercadoResponse> resultList = null;
            if (entityList != null)
            {
                resultList = new List<Sinacor.Servico.Bovespa.Corretagem.Service.DataContract.Response.FormadorMercadoResponse>();
                foreach (BusinessEntity.FormadorMercado entity in entityList)
                {
                    resultList.Add(ToFormadorMercadoResponse(entity));
                }
            }
            return resultList;
        }
    }
}
